<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>闭包(closure)的理解</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
	<script type="text/javascript"> 
		/*
		 *  closure:闭包，内部函数通过某种方式使其可见范围超过了其定义的范围，这就产生了一个在其定义范围内的闭包。
		 */
		function sayHello2(name) { 
			 var text = 'Hello ' + name; 			// local variable 
			 var sayAlert = function() { alert(text); } 
			 return sayAlert; 
		} 
		var sy = sayHello2('never-online'); 
		sy(); 				//  正确调用sayHello()的内部函数
		// sayAlert();        错误调用
	</script>
  </head>
  
  <body>
     闭包的两个特点：
	1、作为一个函数变量的一个引用 - 当函数返回时，其处于激活状态。
	2、一个闭包就是当一个函数返回时，一个没有释放资源的栈区。
	在Javascript里。如果你创建了一个内嵌函数（如上例），也就是创建了一个闭包。
    <br>
    <input type="button" value="闭包test" onclick="sy();">
  </body>
</html>
